package com.wwz.leetcode;

import com.wwz.common.ListNode;
import org.junit.Test;
/**
 * @Description: 反转单链表
 * @create: 2022-01-13 11:00:10
 * @author:wwz
 * @comment   老题又做一遍   没有想象中那么熟练
 *            毁掉一个人的最好方法就是 给他答案 让他停止思考
 */
public class LeetCode206 {

    public ListNode reverseList(ListNode head) {
        ListNode pre = null;
        ListNode next = null;
        ListNode cur = head;
        while (cur != null) {
            // 指向下一个 防止丢了后续
            next = cur.next;
            // 反转指向
            cur.next = pre;
            // 前驱指针向后移动
            pre = cur;
            // cur 向后移动
            cur = next;
        }
        return pre;
    }

    @Test
    public void test() {
        ListNode listNode5 = new ListNode(5, null);
        ListNode listNode4 = new ListNode(4, listNode5);
        ListNode listNode3 = new ListNode(3, listNode4);
        ListNode listNode2 = new ListNode(2, listNode3);
        ListNode listNode1 = new ListNode(1, listNode2);

        ListNode listNode = reverseList(listNode1);
        while (listNode != null) {
            System.out.println(listNode.val);
            listNode = listNode.next;
        }
    }

}
